xen: Add global irq_vector_map option, set if using AMD global intremap tables
authorGeorge Dunlap <george.dunlap@eu.citrix.com>
Mon, 5 Sep 2011 14:00:15 +0000 (15:00 +0100)
committerGeorge Dunlap <george.dunlap@eu.citrix.com>
Mon, 5 Sep 2011 14:00:15 +0000 (15:00 +0100)
commit3ec1e58d337287f06f578a92c4a934b7fbaf3aa9
tree6d575cea0398da35082bbe9933daa0f48510f84b
parent9d032eca4aaab2959c4dd443c9238f5875900ec0
xen: Add global irq_vector_map option, set if using AMD global intremap tables

As mentioned in previous changesets, AMD IOMMU interrupt
remapping tables only look at the vector, not the destination
id of an interrupt.  This means that all IRQs going through
the same interrupt remapping table need to *not* share vectors.

The irq "vector map" functionality was originally introduced
after a patch which disabled global AMD IOMMUs entirely.  That
patch has since been reverted, meaning that AMD intremap tables
can either be per-device or global.

This patch therefore introduces a global irq vector map option,
and enables it if we're using an AMD IOMMU with a global
interrupt remapping table.

This patch removes the "irq-perdev-vector-map" boolean
command-line optino and replaces it with "irq_vector_map",
which can have one of three values: none, global, or per-device.

Setting the irq_vector_map to any value will override the
default that the AMD code sets.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
docs/src/user.tex
xen/arch/x86/irq.c
xen/drivers/passthrough/amd/pci_amd_iommu.c
xen/include/asm-x86/irq.h